Flow-Directed Lightweight Closure Conversion

نویسندگان

  • JEFFREY MARK SISKIND
  • Suresh Jagannathan
  • Jacob Katzenelson
  • Shriram Krishnamurthi
  • Jeffrey Mark Siskind
چکیده

This paper presents a lightweight closure-conversion method that is driven by the results of wholeprogram interprocedural flow, reachability, points-to, and escape analyses. The method has been implemented and evaluated as part of a complete Scheme compiler. When compared with a baseline closure-conversion method that does no optimization, as well as conventional closureconversion methods that only do optimizations that do not rely on interprocedural analysis, this method significantly increases the degree of closure, variable-slot, parent-slot, closure-pointer– slot, variable, parent-parameter, parent-passing, closure-pointer, variable-spilling, and parentspilling elimination. It also significantly increases the degree of parent-slot, closure-pointer–slot, and parent-parameter compression and reduces the number of indirections per variable reference. Finally, code produced by this compiler runs significantly faster than code produced by other state-of-the-art Scheme compilers.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Flow-Directed Closure Conversion for Typed Languages

This paper presents a novel closure conversion strategy which is part of MLton, a whole-program compiler for Standard ML. Unlike other implementations, MLton performs closure-conversion at an early stage to translate programs to a simply-typed rst-order intermediate language upon which most optimizations are performed. Closure conversion is guided by a global control-ow analysis. Like previous ...

متن کامل

Object Closure Conversion

An integral part of implementing functional languages is closure conversion—the process of converting code with free variables into closed code and auxiliary data structures. Closure conversion has been extensively studied in this context, but also arises in languages with first-class objects. In fact, one variant of Java’s inner classes are an example of objects that need to be closure convert...

متن کامل

Scalar Queue Conversion: Dynamic Single Assignment for Concurrent Scheduling

This paper describes scalar queue conversion, a compiler transformation that makes scalar renaming an explicit operation through a process similar to closure conversion. We demonstrate how to use scalar queue conversion to slice a flow graph into two executable parts. When executed, the backward slice creates queues of suspended computations (continuations). At any point in time execution of th...

متن کامل

Using Dominators for Solving Constrained Path Problems

Constrained path problems have to do with finding paths in graphs subject to constraints. We present a constraint programming approach for solving the Ordered disjoint-paths problem (ODP), i.e., the Disjoint-paths problem where the pairs are associated with ordering constraints. In our approach, we reduce ODP to the Ordered simple path with mandatory nodes problem (OSPMN), i.e., the problem of ...

متن کامل

LJGS: Gradual Security Types for Object-Oriented Languages

LJGS is a lightweight Java core calculus with a gradual security type system. The calculus guarantees secure information flow for sequential, class-based, typed object-oriented programming with mutable objects and virtual method calls. An LJGS program is composed of fragments that are checked either statically or dynamically. Statically checked fragments adhere to a security type system so that...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1999